home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / PASCAL / ALLSWAGS.ZIP / SWAGN-R.ZIP / NETWORK.SWG / 0033_Copy EXE TO Directory.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-09-04  |  2.6 KB  |  87 lines

  1.  
  2. {$M 16384,0,655360}
  3.  
  4. { Copies EXEs into the LAN release directory:
  5.  
  6.      RELEASE <ExeFile> <ReleasePath>       }
  7.  
  8. program Release;
  9.  
  10. uses
  11.   DOS,Objects;
  12.  
  13. var
  14.   Error             : Integer;      { Error code for num2str conversions }
  15.   ExeName           : String;       { Name of destination EXE file }
  16.   FindRec           : SearchRec;    { File record from FindFirst }
  17.   FPath             : DirStr;       { Filespec's path }
  18.   FName             : NameStr;      { Filespec's name }
  19.   FExt              : ExtStr;       { Filespec's extension }
  20.   GreatestVersion   : Integer;      { Highest version number found }
  21.   ProgramName       : NameStr;      { Root name (no extension) of program }
  22.   ReleaseDir        : String;       { Location of public EXEs }
  23.   Version           : Integer;      { Version number of an EXE }
  24.  
  25. procedure CopyFile( SourceFilename, TargetFilename : String );
  26.  
  27. const
  28.   BufSize           = $1000;
  29.  
  30. var
  31.   SourceFile,
  32.   TargetFile        : TBufStream;
  33.  
  34. begin
  35.   WriteLn('Copying ',SourceFilename,' to ',TargetFilename,'...');
  36.   SourceFile.Init(SourceFilename,stOpenRead,BufSize);
  37.   if SourceFile.Status <> stOk then
  38.     WriteLn('Error ',SourceFile.ErrorInfo,' opening ',SourceFilename)
  39.   else
  40.   begin
  41.     TargetFile.Init(TargetFilename,stCreate,BufSize);
  42.     if TargetFile.Status <> stOk then
  43.       Writeln('Error ',TargetFile.ErrorInfo,' opening ',TargetFilename)
  44.     else
  45.     begin
  46.       TargetFile.CopyFrom(SourceFile,SourceFile.GetSize);
  47.       if TargetFile.Status <> stOk then
  48.         WriteLn('Error ',TargetFile.ErrorInfo,' copying file.')
  49.       else
  50.         WriteLn('Copy complete');
  51.     end;
  52.     TargetFile.Done;
  53.   end;
  54.   SourceFile.Done;
  55. end;
  56.  
  57. begin
  58.   FSplit(ParamStr(1),FPath,ProgramName,FExt);
  59.   ReleaseDir := ParamStr(2);
  60.   if not (ReleaseDir[Length(ReleaseDir)] in [':','\']) then
  61.     ReleaseDir := ReleaseDir + '\';
  62.  
  63.   { Create program subdirectory if necessary }
  64.   FindFirst(ReleaseDir + ProgramName,Directory,FindRec);
  65.   if DosError <> 0 then
  66.     MkDir(ReleaseDir + ProgramName);
  67.  
  68.   { Find greatest current version for this file }
  69.   GreatestVersion := 0;
  70.   FindFirst(ReleaseDir + ProgramName + '\*.EXE',AnyFile,FindRec);
  71.   while DOSError = 0 do
  72.   begin
  73.     FSplit(FindRec.Name,FPath,FName,FExt);
  74.     Val(FName,Version,Error);
  75.     if Version > GreatestVersion then
  76.       GreatestVersion := Version;
  77.     FindNext(FindRec);
  78.   end;
  79.  
  80.   { Construct filename }
  81.   Str(GreatestVersion + 1,ExeName);
  82.   ExeName := ExeName + '.EXE';
  83.  
  84.   { Copy the program to the version directory }
  85.   CopyFile(ParamStr(1),ReleaseDir + ProgramName + '\' + ExeName);
  86. end.
  87.